Library Packages

library(tidyverse)
-- Attaching packages --------------------------------------- tidyverse 1.2.1 --
v ggplot2 3.1.0     v purrr   0.2.5
v tibble  2.0.1     v dplyr   0.7.8
v tidyr   0.8.2     v stringr 1.4.0
v readr   1.3.1     v forcats 0.3.0
-- Conflicts ------------------------------------------ tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
library(plotly)

Attaching package: 㤼㸱plotly㤼㸲

The following object is masked from 㤼㸱package:ggplot2㤼㸲:

    last_plot

The following object is masked from 㤼㸱package:stats㤼㸲:

    filter

The following object is masked from 㤼㸱package:graphics㤼㸲:

    layout

Data

duke_ncaa_forcast <-
  read_csv("https://raw.githubusercontent.com/fivethirtyeight/data/master/historical-ncaa-forecasts/historical-538-ncaa-tournament-model-results.csv", 
    col_types = cols(year = col_date(format = "%Y"), favorite_win_flag = col_logical())) %>% 
  filter(favorite == "Duke", round < 3)
duke_ncaa_forcast

ggplot2

duke_2ndround_win_probability <- 
ggplot(duke_ncaa_forcast, aes(x = year, y = favorite_probability)) +
  geom_point(aes(color = favorite_win_flag, 
                 shape = favorite_win_flag), size = 4) +
  geom_line() 
duke_2ndround_win_probability

Plotly via ggplotly

ggplotly(duke_2ndround_win_probability)
LS0tDQp0aXRsZTogIkV4ZXJjaXNlOiBTaW1wbGUgSW50ZXJhY3Rpdml0eSINCnN1YnRpdGxlOiAgImdncGxvdGx5ICYgVGltZSBTZXJpZXMiDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQojIyBMaWJyYXJ5IFBhY2thZ2VzDQoNCmBgYHtyfQ0KbGlicmFyeSh0aWR5dmVyc2UpDQpsaWJyYXJ5KHBsb3RseSkNCmBgYA0KDQojIyBEYXRhDQoNCmBgYHtyfQ0KZHVrZV9uY2FhX2ZvcmNhc3QgPC0NCiAgcmVhZF9jc3YoImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9maXZldGhpcnR5ZWlnaHQvZGF0YS9tYXN0ZXIvaGlzdG9yaWNhbC1uY2FhLWZvcmVjYXN0cy9oaXN0b3JpY2FsLTUzOC1uY2FhLXRvdXJuYW1lbnQtbW9kZWwtcmVzdWx0cy5jc3YiLCANCiAgICBjb2xfdHlwZXMgPSBjb2xzKHllYXIgPSBjb2xfZGF0ZShmb3JtYXQgPSAiJVkiKSwgZmF2b3JpdGVfd2luX2ZsYWcgPSBjb2xfbG9naWNhbCgpKSkgJT4lIA0KICBmaWx0ZXIoZmF2b3JpdGUgPT0gIkR1a2UiLCByb3VuZCA8IDMpDQoNCmR1a2VfbmNhYV9mb3JjYXN0DQpgYGANCg0KIyMgZ2dwbG90MiAgDQoNCmBgYHtyfQ0KZHVrZV8ybmRyb3VuZF93aW5fcHJvYmFiaWxpdHkgPC0gDQpnZ3Bsb3QoZHVrZV9uY2FhX2ZvcmNhc3QsIGFlcyh4ID0geWVhciwgeSA9IGZhdm9yaXRlX3Byb2JhYmlsaXR5KSkgKw0KICBnZW9tX3BvaW50KGFlcyhjb2xvciA9IGZhdm9yaXRlX3dpbl9mbGFnLCANCiAgICAgICAgICAgICAgICAgc2hhcGUgPSBmYXZvcml0ZV93aW5fZmxhZyksIHNpemUgPSA0KSArDQogIGdlb21fbGluZSgpIA0KDQpkdWtlXzJuZHJvdW5kX3dpbl9wcm9iYWJpbGl0eQ0KYGBgDQoNCiMjIFBsb3RseSB2aWEgZ2dwbG90bHkNCg0KYGBge3J9DQpnZ3Bsb3RseShkdWtlXzJuZHJvdW5kX3dpbl9wcm9iYWJpbGl0eSkNCmBgYA0KDQo=